#include "ScnsPcf8574.c.h"

#if defined(SCNS_PCF8574_ENABLE)&&SCNS_PCF8574_ENABLE==1

#include "ScnsIic.h"
#include "stm32f7xx_hal.h"

ScnsStatus scnsBspPcf8574Init(ScnsPcf8574Enum pcf8574N)
{
    __HAL_RCC_GPIOB_CLK_ENABLE();
    GPIO_InitTypeDef GPIO_Initure;
    GPIO_Initure.Pin=GPIO_PIN_12;
    GPIO_Initure.Mode=GPIO_MODE_INPUT;
    GPIO_Initure.Pull=GPIO_PULLUP;
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);
    return SCNS_STATUS_OK;
}

ScnsStatus scnsBspPcf8574PostInit(ScnsPcf8574Enum pcf8574N)
{
    return SCNS_STATUS_OK;
}


static const uint8 device[SCNS_PCF8574_MAX]={0X40,0X72,0X7E};

ScnsStatus scnsBspPcf8574Write(ScnsPcf8574Enum pcf8574Enum,const uint8*data,uint8 dataLen)
{
    return scnsIicWriteTick(SCNS_IIC_SOFT_1,device[pcf8574Enum],NULL,0,data,dataLen,8);
}

ScnsStatus scnsBspPcf8574Read(ScnsPcf8574Enum pcf8574Enum,uint8*data,uint8 dataLen)
{
    return scnsIicReadTick(SCNS_IIC_SOFT_1,device[pcf8574Enum],NULL,0,data,dataLen,8);
}

uint8 scnsBspPcf8574GetInt(ScnsPcf8574Enum pcf8574Enum)
{
    if(pcf8574Enum==SCNS_PCF8574_1)
    {
        GPIOB->MODER&=~(3<<(12*2));
        GPIOB->MODER|=0<<12*2;
        return (GPIOB->IDR&GPIO_PIN_12)?1:0;
    }
    return 0;
}

#endif
